
#ifndef DSP2833x_PIE_CTRL_H
#define DSP2833x_PIE_CTRL_H

#ifdef __cplusplus
extern "C" {
#endif

/*---------------------------------------------------------------------------
 PIE Control Register Bit Definitions:
*/
struct PIECTRL_BITS {     /* bits description */
   Uint16  ENPIE:1;        /* 0    Enable PIE block */
   Uint16  PIEVECT:15;     /* 15:1 Fetched vector address */
};

union PIECTRL_REG {
   Uint16                 all;
   struct PIECTRL_BITS  bit;
};  

/* PIEIER: Register bit definitions: */
struct PIEIER_BITS {      /* bits description */
   Uint16 INTx1:1;         /* 0    INTx.1 */
   Uint16 INTx2:1;         /* 1    INTx.2 */
   Uint16 INTx3:1;         /* 2    INTx.3 */
   Uint16 INTx4:1;         /* 3    INTx.4 */
   Uint16 INTx5:1;         /* 4    INTx.5 */
   Uint16 INTx6:1;         /* 5    INTx.6 */
   Uint16 INTx7:1;         /* 6    INTx.7 */
   Uint16 INTx8:1;         /* 7    INTx.8 */
   Uint16 rsvd:8;          /* 15:8 reserved */
};

union PIEIER_REG {
   Uint16              all;
   struct PIEIER_BITS  bit;
}; 

/* PIEIFR: Register bit definitions: */
struct PIEIFR_BITS {      /* bits description */
   Uint16 INTx1:1;         /* 0    INTx.1 */
   Uint16 INTx2:1;         /* 1    INTx.2 */
   Uint16 INTx3:1;         /* 2    INTx.3 */
   Uint16 INTx4:1;         /* 3    INTx.4 */
   Uint16 INTx5:1;         /* 4    INTx.5 */
   Uint16 INTx6:1;         /* 5    INTx.6 */
   Uint16 INTx7:1;         /* 6    INTx.7 */
   Uint16 INTx8:1;         /* 7    INTx.8 */
   Uint16 rsvd:8;          /* 15:8 reserved */
};

union PIEIFR_REG {
   Uint16              all;
   struct PIEIFR_BITS  bit;
};

/* PIEACK: Register bit definitions: */
struct PIEACK_BITS {      /* bits description */
   Uint16 ACK1:1;          /* 0    Acknowledge PIE interrupt group 1 */
   Uint16 ACK2:1;          /* 1    Acknowledge PIE interrupt group 2 */
   Uint16 ACK3:1;          /* 2    Acknowledge PIE interrupt group 3 */
   Uint16 ACK4:1;          /* 3    Acknowledge PIE interrupt group 4 */
   Uint16 ACK5:1;          /* 4    Acknowledge PIE interrupt group 5 */
   Uint16 ACK6:1;          /* 5    Acknowledge PIE interrupt group 6 */
   Uint16 ACK7:1;          /* 6    Acknowledge PIE interrupt group 7 */
   Uint16 ACK8:1;          /* 7    Acknowledge PIE interrupt group 8 */
   Uint16 ACK9:1;          /* 8    Acknowledge PIE interrupt group 9 */
   Uint16 ACK10:1;         /* 9    Acknowledge PIE interrupt group 10 */
   Uint16 ACK11:1;         /* 10   Acknowledge PIE interrupt group 11 */
   Uint16 ACK12:1;         /* 11   Acknowledge PIE interrupt group 12 */
   Uint16 rsvd:4;          /* 15:12 reserved */
};

union PIEACK_REG {
   Uint16              all;
   struct PIEACK_BITS  bit;
};

/*
 PIE Control Register File:
*/
struct PIE_CTRL_REGS {
   union PIECTRL_REG PIECTRL;       /* PIE control register   */
   union PIEACK_REG  PIEACK;        /* PIE acknowledge        */
   union PIEIER_REG  PIEIER1;       /* PIE int1 IER register  */
   union PIEIFR_REG  PIEIFR1;       /* PIE int1 IFR register  */
   union PIEIER_REG  PIEIER2;       /* PIE INT2 IER register  */
   union PIEIFR_REG  PIEIFR2;       /* PIE INT2 IFR register  */
   union PIEIER_REG  PIEIER3;       /* PIE INT3 IER register  */
   union PIEIFR_REG  PIEIFR3;       /* PIE INT3 IFR register  */
   union PIEIER_REG  PIEIER4;       /* PIE INT4 IER register  */          
   union PIEIFR_REG  PIEIFR4;       /* PIE INT4 IFR register  */
   union PIEIER_REG  PIEIER5;       /* PIE INT5 IER register  */
   union PIEIFR_REG  PIEIFR5;       /* PIE INT5 IFR register  */
   union PIEIER_REG  PIEIER6;       /* PIE INT6 IER register  */
   union PIEIFR_REG  PIEIFR6;       /* PIE INT6 IFR register  */
   union PIEIER_REG  PIEIER7;       /* PIE INT7 IER register  */
   union PIEIFR_REG  PIEIFR7;       /* PIE INT7 IFR register  */
   union PIEIER_REG  PIEIER8;       /* PIE INT8 IER register  */
   union PIEIFR_REG  PIEIFR8;       /* PIE INT8 IFR register  */
   union PIEIER_REG  PIEIER9;       /* PIE INT9 IER register  */
   union PIEIFR_REG  PIEIFR9;       /* PIE INT9 IFR register  */
   union PIEIER_REG  PIEIER10;      /* PIE int10 IER register */
   union PIEIFR_REG  PIEIFR10;      /* PIE int10 IFR register */
   union PIEIER_REG  PIEIER11;      /* PIE int11 IER register */
   union PIEIFR_REG  PIEIFR11;      /* PIE int11 IFR register */
   union PIEIER_REG  PIEIER12;      /* PIE int12 IER register */
   union PIEIFR_REG  PIEIFR12;      /* PIE int12 IFR register */
};     

#define PIEACK_GROUP1   0x0001
#define PIEACK_GROUP2   0x0002
#define PIEACK_GROUP3   0x0004
#define PIEACK_GROUP4   0x0008
#define PIEACK_GROUP5   0x0010
#define PIEACK_GROUP6   0x0020
#define PIEACK_GROUP7   0x0040
#define PIEACK_GROUP8   0x0080
#define PIEACK_GROUP9   0x0100
#define PIEACK_GROUP10  0x0200
#define PIEACK_GROUP11  0x0400
#define PIEACK_GROUP12  0x0800

/* PIE Control Registers External References & Function Declarations:*/
extern volatile struct PIE_CTRL_REGS PieCtrlRegs;
extern void InitPieBlock(void);

#ifdef __cplusplus
}
#endif /* extern "C" */

#endif  /* end of DSP2833x_PIE_CTRL_H definition*/

